#include <iostream>
#include <vector>
using namespace std;

int max_plan_recur(vector<int> &pice, int n, int m)
{
        if(m == 0){
                return 1;
        }

        if(n == 0){
                return 0;
        }

        int max_plan = max_plan_recur(pice, n - 1, m);
        if(m >= pice[n]){
                max_plan += max_plan_recur(pice, n, m - pice[n]);
        }

        return max_plan;
}

int max_plan_dp(vector<int> &pice, int n, int m)
{
        vector<int> dp(m + 1, 0);
        dp[0] = 1;
        for(int i = 1; i <= n; i++){
                for(int j = pice[i]; j <= m; j++){
                        dp[j] += dp[j - pice[i]];
                }
        }
        return dp.back();
}

int main()
{
        int n = 4, m = 0;
        cin>>m;

        vector<int> pice = {0, 10, 20, 50, 100};

        cout<<max_plan_dp(pice, n, m)<<endl;

        return 0;
}